<?php
/**
 * 类目数据处理
 *
 * @author Akon(番茄红了) <aultoale@gmail.com>
 */
class CLI_Itemcat extends CLI
{
	/**
	 * 修正类目路径数据
	 */
	public static function fixpath()
	{
		// 清除路径信息
		$set = array('cat_path' => '');
		DB::update('item_cats')->set($set)->where('parent_cid','=',0)->execute();

		// 根类目路径
		$set = array('cat_path' => DB::expr("CONCAT(cid, ';')"));
		DB::update('item_cats')->set($set)->where('parent_cid', '=', 0)->execute();

		//子类目路径
		for ($i=0; $i<5; $i++) {
			DB::query(Database::UPDATE, "UPDATE item_cats AS c
SET cat_path=CONCAT((SELECT cat_path FROM (SELECT cid,cat_path FROM item_cats) AS tmp WHERE cid=c.parent_cid), cid, ';') WHERE parent_cid > 0")->execute();
		}
		CLI::output("修正类目路径数据成功");
	}

	/**
	 * 统计类目信息(产品/商品数量)
	 */
	public static function countNums()
	{
		$rows = DB::select('c.cid', array(DB::expr('COUNT(*)'),'product_nums'))
			->from(array('item_cats', 'c'))
			->join(array('products', 'p'))
			->on('p.cid', '=', 'c.cid')
			->group_by('cid')
			->fetch_all();
		foreach ($rows as $row) {
			$set = array('product_nums' => $row['product_nums']);
			DB::update('item_cats')->set($set)->where('cid', '=', $row['cid'])->execute();
		}

		$cats = DB::select()
			->from('item_cats')
			->where('is_parent', '=', 1)
			->fetch_all();
		foreach ($cats as $cat) {
			if ( ! empty($cat['cat_path'])) 
			{
			    $product_nums = DB::select(DB::expr('SUM(product_nums)'))
					->from('item_cats')
					->where('is_parent', '=', 0)
					->where('cat_path', 'LIKE', $cat['cat_path']."%")
					->fetch_one();
				$set = array('product_nums' => $product_nums);
				DB::update('item_cats')->set($set)->where('cid', '=', $cat['cid'])->execute();
			}
		}
		CLI::output("统计类目信息(产品/商品数量成功\n");
	}


	
	/**
	 * 修正与统计，用于crontab
	 *
	 * @param	none
	 * @access	public
	 * @return	void
	 * @update	2011/4/19
	*/
	public function main()
	{
		CLI_Itemcat::fixpath();
		CLI_Itemcat::countNums();
	} // end func
}


/**
 * 下载类目数据
 *
 * @author Akon(番茄红了) <aultoale@gmail.com>

$catsMenu = <<<EOF

---------------------------

 1、下载类目数据

 2、修正类目路径数据

 3、统计类目信息(产品/商品数量)

 0、返回

---------------------------

请选择 (0,1,2,3)：
EOF;

do {
    // 显示菜单
    $input = CLI::input($catsMenu);

   // 下载类目数据
    if ($input == 1) {

        $input = CLI::input("\n请输入父类目ID（多个类目请使用逗号分隔）：");

        CLI::output("\n信息：尚未开发完成！\n");

    // 修正类目路径数据
    } elseif ($input == 2) {

        ItemCat::fixpath();

        CLI::output("\n信息：类目路径数据完成 √\n");

    // 统计类目信息(产品/商品数量)
    } elseif ($input == 3) {

        ItemCat::countNums();

        CLI::output("\n信息：类目信息统计完成 √\n");

    // 返回
    } else {
        break;
    }

    CLI::input("\n请按下回车键继续！");

} while (true);

unset($catsMenu);
 */